<?php

namespace tmcore\services\sms;

use tmcore\base\BaseManage;
use tmcore\services\ConfigService;

abstract class BaseSms extends BaseManage
{
    /**
     * 短信配置
     * @var array
     */
    protected array $smsConfig = [];

    /**
     * 手机号
     * @var string
     */
    protected string $mobile = '';

    /**
     * 模板code
     * @var string
     */
    protected string $templateCode = '';

    /**
     * 初始化
     * @param array $config 配置参数
     */
    public function initialize(array $config)
    {
        if($config) {
            $this->smsConfig = $config;
        } else {
            $this->smsConfig = (new ConfigService())->getConfig($this->name,'sms');
        }
    }

    /**
     * 获取短信配置
     * @return array
     */
    public function getSmsConfig()
    {
        return $this->smsConfig;
    }

    /**
     * 设置发送手机号码
     * @param int $mobile
     * @return $this
     */
    public function setMobile(int $mobile)
    {
        $this->mobile = trim($mobile);
        return $this;
    }

    /**
     * 设置短信模板编码
     * @param string $code
     * @return $this
     */
    public function setTemplateCode(string $code)
    {
        $this->templateCode = trim($code);
        return $this;
    }

    /**
     * 获取短信发送参数
     * @param array $params
     * @return string
     */
    protected function getTemplateParam(array $params)
    {
        return json_encode($params, JSON_UNESCAPED_UNICODE);
    }

    /**
     * 发送短信
     * @param array $params 参数
     * @return mixed
     */
     abstract public function sendSms(array $params);
}